providers.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. "use client";
  2. import { NuqsAdapter } from "nuqs/adapters/next/app";
  3. import { ReactQueryDevtools } from "@tanstack/react-query-devtools";
  4. import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
  5. import { I18nProviderClient } from "locales/client";
  6. import { AnalyticsProvider } from "@/shared/lib/analytics/client";
  7. import { DialogRenderer } from "@/features/dialogs-provider/DialogProvider";
  8. import { ToastSonner } from "@/components/ui/ToastSonner";
  9. import { Toaster } from "@/components/ui/toaster";
  10. import { ThemeProvider } from "@/components/ui/theme-provider";
  11. import type { PropsWithChildren } from "react";
  12. const queryClient = new QueryClient();
  13. export const Providers = ({ children, locale }: PropsWithChildren<{ locale: string }>) => {
  14. return (
  15. <>
  16. <AnalyticsProvider />
  17. <NuqsAdapter>
  18. <QueryClientProvider client={queryClient}>
  19. <I18nProviderClient locale={locale}>
  20. <ThemeProvider attribute="class" defaultTheme="system" disableTransitionOnChange enableSystem>
  21. <Toaster />
  22. <ToastSonner />
  23. <DialogRenderer />
  24. <ReactQueryDevtools initialIsOpen={false} />
  25. {children}
  26. </ThemeProvider>
  27. </I18nProviderClient>
  28. </QueryClientProvider>
  29. </NuqsAdapter>
  30. </>
  31. );
  32. };